#include<spdlog/spdlog.h>
#include "spdlog/sinks/stdout_color_sinks.h"
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/async.h"
#include<iostream>

int main()
{
    //设置全局刷新策略
    spdlog::flush_every(std::chrono::seconds(1)); //每隔多少秒刷新一次

    spdlog::flush_on(spdlog::level::level_enum::debug); //遇到什么等级及以上等级立即刷新
    
    //设置全局日志输出等级 -- 无所谓 每个日志可以单独设置
    //设置日志级别后，只有高于或等于该级别的日志消息才会被记录
    spdlog::set_level(spdlog::level::debug);

    //初始化异步日志输出线程配置 线程池默认属性
    spdlog::init_thread_pool(3072, 1);

    //创建异步日志器(标准输出/文件) --工厂接口默认同步日志器
    auto logger = spdlog::stdout_color_mt<spdlog::async_factory>("default-logger");
    //auto logger = spdlog::basic_logger_mt<spdlog::async_factory>("file-logger", "async.log");

    //设置日志器的刷新策略 以及设置日志器的输出等级
        //logger->set_level;
        //logger->flush_on;
    //设置日志输出格式
        //logger->set_pattern("%Y-%m-%d %H:%M:%S [%t] [%-7l] %v");
    logger->set_pattern("[%H:%M:%S][%t][%-8l]  %v");
    //进行简单的日志输出
    logger->trace("你好! {}", "小明");
    logger->debug("你好! {}", "小明");
    logger->info("你好! {}", "小明");
    logger->error("你好! {}", "小明");
    logger->warn("你好! {}", "小明");
    logger->critical("你好! {}", "小明");
    std::cout << "日志输出完毕" << std::endl;

    return 0;
} 